package ace.module.account.api;

import ace.cmp.core.model.PageResultDto;
import ace.cmp.core.model.R;
import ace.cmp.sdk.api.SdkApi;
import ace.module.account.api.model.dto.IamAccountPassportDto;
import ace.module.account.api.model.input.passport.IamAccountPassportSearchOutInput;
import ace.module.common.api.model.input.PageInput;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

/**
 * @author Caspar
 */
public interface IamAccountPassportApi extends SdkApi<IamAccountPassportDto, Long> {

  R<IamAccountPassportDto> getByIamAppIdAndPassport123AndPassportType(
      @Valid @NotNull Long appBizTypeId,
      @Valid @NotEmpty String passport,
      @Valid @NotEmpty String passport2,
      @Valid @NotEmpty String passport3,
      @Valid @NotNull Integer passportType);

  R<PageResultDto<IamAccountPassportDto>> search(
      @Valid @NotNull PageInput<IamAccountPassportSearchOutInput> input);
}
